// for...in

// 用于遍历对象的可枚举属性，包括对象自身的属性以及从原型链上继承的属性（如果这些属性是可枚举的）。
// for...in 会返回属性名（键），而不是属性值。

// for...in 迭代的是对象的键（属性名）：

const obj = { a: 1, b: 2, c: 3 };

for (let key in obj) {
    console.log(key); // 输出 "a", "b", "c"
}

// for...in 会遍历对象自身的和从原型链继承的可枚举属性。
// 为了避免遍历到原型链上的属性，可以使用 hasOwnProperty 进行过滤。


// var obj = {
//     a: 1,
//     b: 2
//    }

//    var proObj = {}
//    Object.defineProperty(proObj, 'c' , {
//         value: 3,
//         enumerable: true
//     })
//    Object.setPrototypeOf(obj, proObj)
//    console.log(obj)
//    for (let key in obj) {
//     console.log(key)
//    }